/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.montadora.abc.controller;

import br.com.montadora.abc.dao.MontadoraDAO;
import br.com.montadora.abc.model.Montadora;
import br.com.montadora.abc.model.MontadoraEstrangeira;
import br.com.montadora.abc.model.Veiculo;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Aurelio
 */
@ManagedBean(name = "montadoraCtrl")
@SessionScoped
public class MontadoraController {

    private MontadoraDAO montadoraDAO;
    private Montadora montadora;
    private MontadoraEstrangeira montadoraEstrangeira;
    private String tipoMontadora = "";

    public MontadoraController() {

        montadoraDAO = MontadoraDAO.getInstance();
        montadora = new Montadora();
        montadoraEstrangeira = new MontadoraEstrangeira();
    }

    public List<MontadoraEstrangeira> listarMontadorasInternacionais() {
        try {
            List<MontadoraEstrangeira> montadorasEstrangeiras = montadoraDAO.carregarTudoOrdenado(MontadoraEstrangeira.class, "nome");
            return montadorasEstrangeiras;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    public List<Montadora> listarMontadorasNacionais() {
        try {
            List<Montadora> montadoras = montadoraDAO.listarMontadorasNacionais();
            return montadoras;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    public void excluiMontadora(Montadora montadora) {
        try {
            montadoraDAO.excluir(montadora);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Montadora excluído com sucesso!", null));
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Ocorreu um erro ao tentar excluir esta montadora!", null));
        }
    }

    public void salvarMontadoraNacional() {
        try {
            montadoraDAO.gravar(this.montadora);
            this.montadora = new Montadora();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Montadora salva com sucesso!", null));
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ocorreu um erro ao tentar salvar esta montadora!", null));
        }

    }

    public void salvarMontadoraEstrangeira() {
        try {
            montadoraDAO.gravar(this.montadoraEstrangeira);
            this.montadoraEstrangeira = new MontadoraEstrangeira();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Montadora salva com sucesso!", null));
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ocorreu um erro ao tentar salvar esta montadora!", null));
        }

    }

    public boolean isNacional() {
        if ("NACIONAL".equals(this.tipoMontadora)) {
            return true;
        } else {
            return false;
        }
    }

    public boolean isEstrangeira() {
        if ("EXTRANGEIRA".equals(this.tipoMontadora)) {
            return true;
        } else {
            return false;
        }
    }
    
    public void alterarMontadoraNacional(){
        try {
            montadoraDAO.alterar(this.montadora);
            this.montadora = new Montadora();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Montadora atualizado com sucesso!", null));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao atualizar a montadora!!", null));
        }
    }
    
    public void alterarMontadoraEstrangeira(){
        try {
            montadoraDAO.alterar(this.montadoraEstrangeira);
            this.montadoraEstrangeira = new MontadoraEstrangeira();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Montadora atualizado com sucesso!", null));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao atualizar a montadora!!", null));
        }
    }
    /**
     * @return the montadora
     */
    public Montadora getMontadora() {
        return montadora;
    }

    /**
     * @param montadora the montadora to set
     */
    public void setMontadora(Montadora montadora) {
        this.montadora = montadora;
    }

    /**
     * @return the montadoraEstrangeira
     */
    public MontadoraEstrangeira getMontadoraEstrangeira() {
        return montadoraEstrangeira;
    }

    /**
     * @param montadoraEstrangeira the montadoraEstrangeira to set
     */
    public void setMontadoraEstrangeira(MontadoraEstrangeira montadoraEstrangeira) {
        this.montadoraEstrangeira = montadoraEstrangeira;
    }

    /**
     * @return the tipoMontadora
     */
    public String getTipoMontadora() {
        return tipoMontadora;
    }

    /**
     * @param tipoMontadora the tipoMontadora to set
     */
    public void setTipoMontadora(String tipoMontadora) {
        this.tipoMontadora = tipoMontadora;
    }
}
